////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2017-2018 Qualcomm Technologies, Inc.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// THIS IS AUTO-GENERATED CODE.  PLEASE DO NOT EDIT (File bug reports against tools).
///
/// Auto-generated by: ParameterParser V1.1.4
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file  hnr_1_0_0.h
/// @brief Auto-generated Chromatix parameter file
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef HNR_1_0_0_H
#define HNR_1_0_0_H

#include "parametermodule.h"
#include "parameterfilesymboltable.h"
#include "parametertypes.h"
#include "ispglobalelements.h"

#define HNR_1_0_0_NAMESPACE_BEGIN namespace hnr_1_0_0 {
#define HNR_1_0_0_NAMESPACE_END }

HNR_1_0_0_NAMESPACE_BEGIN

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// hnr10_rgn_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct hnr10_rgn_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// lnr_gain_arr_tab
    ///
    /// Tuning Level:  often_tune
    /// Description:   luma based noise reduction gain table
    /// Default Value: 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
    /// Range:         [0, 63]
    /// Bit Depth:     6u, q5
    /// Length:        33
    /// Notes:         HNR will be stronger as lnr_gain_arr decreases.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct lnr_gain_arr_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// lnr_gain_arr - Array
        ///
        /// Tuning Level:  often_tune
        /// Default Value: 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
        /// Length:        33
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT lnr_gain_arr[33];
    } lnr_gain_arr_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// lnr_shift
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   LNR right shift used to adjust LNR LUT input value
    /// Default Value: 2
    /// Range:         [0, 3]
    /// Bit Depth:     2
    /// Notes:         HNR will be stronger as lnr_shift increases.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     lnr_shift;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// radial_noise_prsv_adj_tab
    ///
    /// Tuning Level:  often_tune
    /// Description:   radial adjustment for noise preserving percentage
    /// Default Value: 1.0, 1.0, 0.9375, 0.8750, 0.7500, 0.6250, 0.5000
    /// Range:         [0, 1.0]
    /// Bit Depth:     10uQ9
    /// Length:        7
    /// Notes:         HNR will be stronger denoising as radial_noise_prsv_adj decreases. In general, radial_noise_prsv_adj is a
    ///                monotonically decreasing curve.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct radial_noise_prsv_adj_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// radial_noise_prsv_adj - Array
        ///
        /// Tuning Level:  often_tune
        /// Default Value: 1.0, 1.0, 0.9375, 0.8750, 0.7500, 0.6250, 0.5000
        /// Length:        7
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT radial_noise_prsv_adj[7];
    } radial_noise_prsv_adj_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// cnr_gain_arr_tab
    ///
    /// Tuning Level:  often_tune
    /// Description:   chroma based noise reduction(distance percentage) for peak noise reduction
    /// Default Value: 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
    /// Range:         [0,63]
    /// Bit Depth:     6u, q5
    /// Length:        25
    /// Notes:         HNR will be stronger as cnr_gain_arr decreases.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct cnr_gain_arr_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// cnr_gain_arr - Array
        ///
        /// Tuning Level:  often_tune
        /// Default Value: 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
        /// Length:        25
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT cnr_gain_arr[25];
    } cnr_gain_arr_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// cnr_low_thrd_u
    ///
    /// Tuning Level:  often_tune
    /// Description:   CNR low-bound threshold for U channel
    /// Default Value: 2
    /// Range:         [-128, 127]
    /// Bit Depth:     8s
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     cnr_low_thrd_u;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// cnr_low_thrd_v
    ///
    /// Tuning Level:  often_tune
    /// Description:   CNR low-bound threshold for V channel
    /// Default Value: 2
    /// Range:         [-128, 127]
    /// Bit Depth:     8s
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     cnr_low_thrd_v;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// cnr_low_gap_u
    ///
    /// Tuning Level:  often_tune
    /// Description:   the difference between the upper and the lower threshold values in U channel are (2^cnr_thrd_gap_u)
    /// Default Value: 1
    /// Range:         [0, 7]
    /// Bit Depth:     3u
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     cnr_low_gap_u;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// cnr_low_gap_v
    ///
    /// Tuning Level:  often_tune
    /// Description:   the difference between the upper and the lower threshold values in V channel are (2^cnr_thrd_gap_v)
    /// Default Value: 1
    /// Range:         [0, 7]
    /// Bit Depth:     3u
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     cnr_low_gap_v;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// cnr_adj_gain
    ///
    /// Tuning Level:  often_tune
    /// Description:   CNR adjust gain
    /// Default Value: 32
    /// Range:         [0, 63]
    /// Bit Depth:     6u, q5
    /// Notes:         HNR will be stronger as cnr_adj_gain decreases.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     cnr_adj_gain;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// cnr_scale
    ///
    /// Tuning Level:  often_tune
    /// Description:   scale of CNR input before the table look-up.
    /// Default Value: 4
    /// Range:         [0, 15]
    /// Bit Depth:     4u
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     cnr_scale;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// fnr_gain_arr_tab
    ///
    /// Tuning Level:  often_tune
    /// Description:   gain table for flatness based noise reduction
    /// Default Value: 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
    /// Range:         [0, 63]
    /// Bit Depth:     6u, q5
    /// Length:        17
    /// Notes:         HNR will be stronger as fnr_gain_arr decreases.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct fnr_gain_arr_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// fnr_gain_arr - Array
        ///
        /// Tuning Level:  often_tune
        /// Default Value: 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
        /// Length:        17
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT fnr_gain_arr[17];
    } fnr_gain_arr_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// fnr_gain_clamp_arr_tab
    ///
    /// Tuning Level:  often_tune
    /// Description:   filtering gain clamp table for noise reduction
    /// Default Value: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128
    /// Range:         [0, 255]
    /// Bit Depth:     8u, q7
    /// Length:        17
    /// Notes:         HNR will be stronger as fnr_gain_clamp_arr decreases.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct fnr_gain_clamp_arr_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// fnr_gain_clamp_arr - Array
        ///
        /// Tuning Level:  often_tune
        /// Default Value: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128
        /// Length:        17
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT fnr_gain_clamp_arr[17];
    } fnr_gain_clamp_arr_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// fnr_ac_th_tab
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   FNR activity (variance )normalization by level
    /// Default Value: 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
    /// Range:         [0, 63]
    /// Bit Depth:     6u, q5
    /// Length:        17
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct fnr_ac_th_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// fnr_ac_th - Array
        ///
        /// Tuning Level:  rarely_tune
        /// Default Value: 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
        /// Length:        17
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT fnr_ac_th[17];
    } fnr_ac_th_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// fnr_ac_shift
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   FNR activity (variance ) shift before looking up fnr_gain_arr
    /// Default Value: 1
    /// Range:         [0, 3]
    /// Bit Depth:     2u
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     fnr_ac_shift;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// filtering_nr_gain_arr_tab
    ///
    /// Tuning Level:  often_tune
    /// Description:   final noise reduction gain table
    /// Default Value: 16, 32, 48, 64, 80, 96, 112, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128
    /// Range:         [0, 255]
    /// Bit Depth:     8u, q7
    /// Length:        33
    /// Notes:         HNR will be stronger as filtering_nr_gain_arr decreases.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct filtering_nr_gain_arr_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// filtering_nr_gain_arr - Array
        ///
        /// Tuning Level:  often_tune
        /// Default Value: 16, 32, 48, 64, 80, 96, 112, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128
        /// Length:        33
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT filtering_nr_gain_arr[33];
    } filtering_nr_gain_arr_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// abs_amp_shift
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   right shift bit applied coefficient amplitude before looking up filtering_nr_gain_arr
    /// Default Value: 0
    /// Range:         [0, 3]
    /// Bit Depth:     2u
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     abs_amp_shift;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// lpf3_percent
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   low-pass filter threshold percentage
    /// Default Value: 0
    /// Range:         [0, 255]
    /// Bit Depth:     8u, q8
    /// Notes:         low-pass filer will be stronger as lpf3_percent increases.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     lpf3_percent;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// lpf3_offset
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   low-pass filter threshold offset
    /// Default Value: 0
    /// Range:         [0, 255]
    /// Bit Depth:     8u
    /// Notes:         low-pass filer will be stronger as lpf3_offset increases.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     lpf3_offset;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// lpf3_strength
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   low-pass filter gradient smoothing strength
    /// Default Value: 2
    /// Range:         [0, 5]
    /// Bit Depth:     3u
    /// Notes:         low-pass filer gradient smoothing will be stronger as lpf3_strength increases.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     lpf3_strength;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// blend_lnr_gain_arr_tab
    ///
    /// Tuning Level:  often_tune
    /// Description:   luma based noise reduction gain table
    /// Default Value: 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
    /// Range:         [0, 255]
    /// Bit Depth:     8u, q7
    /// Length:        17
    /// Notes:         more noise/details will be added back as blending_lnr_gain_arr increases.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct blend_lnr_gain_arr_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// blend_lnr_gain_arr - Array
        ///
        /// Tuning Level:  often_tune
        /// Default Value: 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
        /// Length:        17
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT blend_lnr_gain_arr[17];
    } blend_lnr_gain_arr_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// blend_cnr_adj_gain
    ///
    /// Tuning Level:  often_tune
    /// Description:   CNR adjust gain for blending
    /// Default Value: 32
    /// Range:         [0, 63]
    /// Bit Depth:     6u, q5
    /// Notes:         more noise/details will be added back as blend_cnr_adj_gain increases.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     blend_cnr_adj_gain;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// blend_snr_gain_arr_tab
    ///
    /// Tuning Level:  often_tune
    /// Description:   skin based blending gain table
    /// Default Value: 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
    /// Range:         [1, 32]
    /// Bit Depth:     5u, q5, SW tuning parameter need subtract by 1 and set it to HW register.
    /// Length:        17
    /// Notes:         more noise/details will be added back as blending_snr_gain_arr increases. SW tuning parameter need
    ///                subtract by 1 and set it to HW register.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct blend_snr_gain_arr_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// blend_snr_gain_arr - Array
        ///
        /// Tuning Level:  often_tune
        /// Default Value: 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
        /// Length:        17
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT blend_snr_gain_arr[17];
    } blend_snr_gain_arr_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// skin_hue_min
    ///
    /// Tuning Level:  must_tune
    /// Description:   Min hue value for skin detection. Instead of negative (Cb/Cr), absolute value |Cb/Cr| is used in HW
    /// Default Value: -1.39
    /// Range:         [-3.0, -1.0]
    /// Bit Depth:     10u, q8
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     skin_hue_min;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// skin_hue_max
    ///
    /// Tuning Level:  must_tune
    /// Description:   Max hue value for skin detection. Instead of negative (Cb/Cr), absolute value |Cb/Cr| is used in HW
    /// Default Value: -0.4
    /// Range:         [-0.996, 0]
    /// Bit Depth:     8u, q8
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     skin_hue_max;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// skin_y_min
    ///
    /// Tuning Level:  must_tune
    /// Description:   Min Y value for skin detection.
    /// Default Value: 0.125
    /// Range:         [0, 1.0]
    /// Bit Depth:     8u, q8
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     skin_y_min;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// skin_y_max
    ///
    /// Tuning Level:  must_tune
    /// Description:   Max Y value for skin detection
    /// Default Value: 1.0
    /// Range:         [0, 1.0]
    /// Bit Depth:     8u, q8
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     skin_y_max;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// skin_saturation_min_y_max
    ///
    /// Tuning Level:  must_tune
    /// Description:   Min saturation value for skin when Y=Y_max
    /// Default Value: 0.08
    /// Range:         [0, 0.4]
    /// Bit Depth:     8u, q8
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     skin_saturation_min_y_max;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// skin_saturation_max_y_max
    ///
    /// Tuning Level:  must_tune
    /// Description:   Max saturation value for skin when Y=Y_max
    /// Default Value: 0.8
    /// Range:         [0.1, 0.5]
    /// Bit Depth:     8u, q8
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     skin_saturation_max_y_max;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// skin_saturation_min_y_min
    ///
    /// Tuning Level:  must_tune
    /// Description:   Min saturation value for skin when Y=Y_min
    /// Default Value: 0.32
    /// Range:         [0, 0.5]
    /// Bit Depth:     8u, q8
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     skin_saturation_min_y_min;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// skin_saturation_max_y_min
    ///
    /// Tuning Level:  must_tune
    /// Description:   Max saturation value for skin when Y=Y_min
    /// Default Value: 1.0
    /// Range:         [0.2, 1.0]
    /// Bit Depth:     8u, q8
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     skin_saturation_max_y_min;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// skin_boundary_probability
    ///
    /// Tuning Level:  must_tune
    /// Description:   skin-tone probability at the boundary of skin-tone range
    /// Default Value: 8
    /// Range:         [1, 15]
    /// Bit Depth:     4u, q4
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     skin_boundary_probability;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// skin_percent
    ///
    /// Tuning Level:  must_tune
    /// Description:   Percentage of skin tone region with skin-tone probability 1
    /// Default Value: 12
    /// Range:         [0,100]
    /// Bit Depth:     n/a
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     skin_percent;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// skin_non_skin_to_skin_q_ratio
    ///
    /// Tuning Level:  must_tune
    /// Description:   Ratio of Q_nonSkin to Q_skin
    /// Default Value: 0.5
    /// Range:         [0.1, 10.0]
    /// Bit Depth:     n/a
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     skin_non_skin_to_skin_q_ratio;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// face_boundary
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   the lower bound of face region. Full skin detection is applied within radius smaller than face_boundary *
    ///                face_radius(from face detection).
    /// Default Value: 1.2
    /// Range:         [0, 8]
    /// Bit Depth:     n/a
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     face_boundary;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// face_transition
    ///
    /// Tuning Level:  must_tune
    /// Description:   the upper bound of face region. no skin detection is applied within radius larger than face_transition *
    ///                face_radius(from face detection).
    /// Default Value: 2.0
    /// Range:         [0, 8]
    /// Bit Depth:     n/a
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     face_transition;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// snr_gain_arr_tab
    ///
    /// Tuning Level:  often_tune
    /// Description:   skin based noise reduction gain table
    /// Default Value: 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
    /// Range:         [1, 32]
    /// Bit Depth:     5u, q5, SW tuning parameter need subtract by 1 and set it to HW register.
    /// Length:        17
    /// Notes:         HNR will be stronger as snr_gain_arr decreases. SW tuning parameter need subtract by 1 and set it to HW
    ///                register.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct snr_gain_arr_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// snr_gain_arr - Array
        ///
        /// Tuning Level:  often_tune
        /// Default Value: 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
        /// Length:        17
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT snr_gain_arr[17];
    } snr_gain_arr_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// snr_skin_smoothing_str
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   skin map smoothing strength for SNR
    /// Default Value: 2
    /// Range:         [0, 2]
    /// Bit Depth:     2u
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                     snr_skin_smoothing_str;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_hnr10_aec_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_hnr10_aec_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// aec_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    globalelements::trigger_pt_type_aec aec_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hnr10_rgn_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    hnr10_rgn_dataType  hnr10_rgn_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_hnr10_hdr_aec_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_hnr10_hdr_aec_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hdr_aec_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ispglobalelements::trigger_pt_type_aec_hdr hdr_aec_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hdr_aec_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct hdr_aec_dataStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// mod_hnr10_aec_data - Array
        /// Min Length:    1
        /// Max Length:    Unbounded
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32                  mod_hnr10_aec_dataCount;
        UINT32                  mod_hnr10_aec_dataID;
        mod_hnr10_aec_dataType* mod_hnr10_aec_data;
    } hdr_aec_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_hnr10_drc_gain_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_hnr10_drc_gain_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// drc_gain_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ispglobalelements::trigger_pt_type drc_gain_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// drc_gain_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct drc_gain_dataStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// mod_hnr10_hdr_aec_data - Array
        /// Min Length:    1
        /// Max Length:    Unbounded
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32                      mod_hnr10_hdr_aec_dataCount;
        UINT32                      mod_hnr10_hdr_aec_dataID;
        mod_hnr10_hdr_aec_dataType* mod_hnr10_hdr_aec_data;
    } drc_gain_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_hnr10_total_scale_ratio_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_hnr10_total_scale_ratio_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// total_scale_ratio_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ispglobalelements::trigger_pt_type        total_scale_ratio_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// total_scale_ratio_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct total_scale_ratio_dataStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// mod_hnr10_drc_gain_data - Array
        /// Min Length:    1
        /// Max Length:    Unbounded
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32                       mod_hnr10_drc_gain_dataCount;
        UINT32                       mod_hnr10_drc_gain_dataID;
        mod_hnr10_drc_gain_dataType* mod_hnr10_drc_gain_data;
    } total_scale_ratio_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_hnr10_coreType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_hnr10_coreType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mod_hnr10_total_scale_ratio_data - Array
    /// Min Length:    1
    /// Max Length:    Unbounded
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32                                mod_hnr10_total_scale_ratio_dataCount;
    UINT32                                mod_hnr10_total_scale_ratio_dataID;
    mod_hnr10_total_scale_ratio_dataType* mod_hnr10_total_scale_ratio_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_hnr10_reserveType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_hnr10_reserveType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// lnr_en
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   enable bit of luma based noise reduction
    /// Default Value: 1
    /// Range:         [0, 1]
    /// Bit Depth:     1u
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    globalelements::enable_flag_type  lnr_en;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// rnr_en
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   enable bit of radius based noise reduction
    /// Default Value: 1
    /// Range:         [0, 1]
    /// Bit Depth:     1u
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    globalelements::enable_flag_type  rnr_en;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// cnr_en
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   enable bit of chroma based noise reduction
    /// Default Value: 1
    /// Range:         [0, 1]
    /// Bit Depth:     1u
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    globalelements::enable_flag_type  cnr_en;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// snr_en
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   enable bit of skin color based noise reduction
    /// Default Value: 1
    /// Range:         [0, 1]
    /// Bit Depth:     1u
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    globalelements::enable_flag_type  snr_en;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// fd_snr_en
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   enable bit of face guided skin color based noise reduction
    /// Default Value: 0
    /// Range:         [0, 1]
    /// Bit Depth:     1u
    /// Notes:         if fd_snr_en = 1, snr is applied on face regions; if fd_snr_en = 0, snr is applied on both face regions
    ///                and non-face regions
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    globalelements::enable_flag_type  fd_snr_en;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// fnr_en
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   enable bit of flatness based noise reduction
    /// Default Value: 1
    /// Range:         [0, 1]
    /// Bit Depth:     1u
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    globalelements::enable_flag_type  fnr_en;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// lpf3_en
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   enable bit of low-pass filter
    /// Default Value: 1
    /// Range:         [0, 1]
    /// Bit Depth:     1u
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    globalelements::enable_flag_type  lpf3_en;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// blend_cnr_en
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   enable bit of color based noise blending
    /// Default Value: 1
    /// Range:         [0, 1]
    /// Bit Depth:     1u
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    globalelements::enable_flag_type  blend_cnr_en;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// blend_snr_en
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   enable bit of skin color based blending
    /// Default Value: 1
    /// Range:         [0, 1]
    /// Bit Depth:     1u
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    globalelements::enable_flag_type  blend_snr_en;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// radial_anchor_tab
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   radial anchor table (distance percentage)
    /// Default Value: 0.0, 0.2, 0.3, 0.4, 0.6, 0.8, 1.0
    /// Range:         [0.0, 1.0]
    /// Bit Depth:     10u
    /// Length:        7
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct radial_anchor_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// radial_anchor - Array
        ///
        /// Tuning Level:  rarely_tune
        /// Default Value: 0.0, 0.2, 0.3, 0.4, 0.6, 0.8, 1.0
        /// Length:        7
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT radial_anchor[7];
    } radial_anchor_tab;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_hnr10Type
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_hnr10Type
{
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Binary file symbol table entry ID
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 SymbolTableID;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// enable_section
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct enable_sectionStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// hnr_nr_enable
        ///
        /// Tuning Level:  rarely_tune
        /// Description:   HNR noise reduction enable bit
        /// Default Value: 1
        /// Range:         [0, 1]
        /// Bit Depth:     1u
        /// Notes:         none
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        globalelements::enable_flag_type hnr_nr_enable;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// hnr_blend_enable
        ///
        /// Tuning Level:  rarely_tune
        /// Description:   HNR blending enable bit
        /// Default Value: 1
        /// Range:         [0, 1]
        /// Bit Depth:     1u
        /// Notes:         none
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        globalelements::enable_flag_type hnr_blend_enable;
    } enable_section;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// module_version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct module_versionStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;
        INT32 major_revision;
        INT32 minor_revision;
        INT32 incr_revision;
    } module_version;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// control_variables
    ///
    /// Default Value: control_total_scale_ratio, control_drc_gain, control_aec_exp_sensitivity_ratio, control_gain
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct control_variablesStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// control_var_type - Array
        /// Default Value: control_total_scale_ratio, control_drc_gain, control_aec_exp_sensitivity_ratio, control_gain
        /// Length:        4
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        enum class control_var_typeEnum
        {
            control_drc_gain                  = 0,
            control_exp_time_ratio            = 1,
            control_aec_exp_sensitivity_ratio = 2,
            control_lux_idx                   = 3,
            control_gain                      = 4,
            control_total_scale_ratio         = 5
        } control_var_type[4];
    } control_variables;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// control_method
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct control_methodStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// aec_exp_control
        /// Default Value: control_gain
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ispglobalelements::tuning_control_aec_type     aec_exp_control;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// aec_hdr_control
        /// Default Value: control_aec_exp_sensitivity_ratio
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ispglobalelements::tuning_control_aec_hdr_type aec_hdr_control;
    } control_method;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// dynamic_enable_triggers
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct dynamic_enable_triggersStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// hnr_nr_enable
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        struct hnr_nr_enableStruct
        {
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// Binary file symbol table entry ID
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            UINT32 SymbolTableID;

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// enable
            ///
            /// Tuning Level:  rarely_tune
            /// Description:   enable HNR1.0 module
            /// Default Value: 0
            /// Range:         [0, 1]
            /// Bit Depth:     1u
            /// Notes:         none
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            globalelements::enable_flag_type        enable;

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// hyst_control_var
            ///
            /// Tuning Level:  rarely_tune
            /// Description:   enable HNR1.0 module
            /// Default Value: control_gain
            /// Range:         [0, 1]
            /// Bit Depth:     1u
            /// Notes:         none
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            ispglobalelements::control_var_type        hyst_control_var;

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// hyst_mode
            /// Default Value: UPWARD
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            ispglobalelements::hyst_direction          hyst_mode;

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// hyst_trigger
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            ispglobalelements::trigger_pt_couplet_type hyst_trigger;
        } hnr_nr_enable;
    } dynamic_enable_triggers;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chromatix_hnr10_reserve
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_hnr10_reserveType chromatix_hnr10_reserve;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chromatix_hnr10_core
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_hnr10_coreType    chromatix_hnr10_core;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_hnr10TypeClass
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class chromatix_hnr10TypeClass : public ParameterModule, public chromatix_hnr10Type
{
public:
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static const UINT16 MAJOR = 1;
    static const UINT16 MINOR = 0;
    static const UINT32 PATCH = 0;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Default Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_hnr10TypeClass(
        const CHAR* name);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_hnr10TypeClass(
        const CHAR* name,
        UINT32 modeId,
        UINT16 mode,
        UINT16 subMode,
        UINT32 group);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Destructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ~chromatix_hnr10TypeClass();

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// GetName
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static const CHAR* GetName(
        const CHAR* type);


    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load hnr10_rgn_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadhnr10_rgn_dataType(
        ParameterFileSymbolTableEntry* entry,
        hnr10_rgn_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load hnr10_rgn_dataType_lnr_gain_arr_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadhnr10_rgn_dataType_lnr_gain_arr_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        hnr10_rgn_dataType::lnr_gain_arr_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load hnr10_rgn_dataType_radial_noise_prsv_adj_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadhnr10_rgn_dataType_radial_noise_prsv_adj_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        hnr10_rgn_dataType::radial_noise_prsv_adj_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load hnr10_rgn_dataType_cnr_gain_arr_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadhnr10_rgn_dataType_cnr_gain_arr_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        hnr10_rgn_dataType::cnr_gain_arr_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load hnr10_rgn_dataType_fnr_gain_arr_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadhnr10_rgn_dataType_fnr_gain_arr_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        hnr10_rgn_dataType::fnr_gain_arr_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load hnr10_rgn_dataType_fnr_gain_clamp_arr_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadhnr10_rgn_dataType_fnr_gain_clamp_arr_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        hnr10_rgn_dataType::fnr_gain_clamp_arr_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load hnr10_rgn_dataType_fnr_ac_th_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadhnr10_rgn_dataType_fnr_ac_th_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        hnr10_rgn_dataType::fnr_ac_th_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load hnr10_rgn_dataType_filtering_nr_gain_arr_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadhnr10_rgn_dataType_filtering_nr_gain_arr_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        hnr10_rgn_dataType::filtering_nr_gain_arr_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load hnr10_rgn_dataType_blend_lnr_gain_arr_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadhnr10_rgn_dataType_blend_lnr_gain_arr_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        hnr10_rgn_dataType::blend_lnr_gain_arr_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load hnr10_rgn_dataType_blend_snr_gain_arr_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadhnr10_rgn_dataType_blend_snr_gain_arr_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        hnr10_rgn_dataType::blend_snr_gain_arr_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load hnr10_rgn_dataType_snr_gain_arr_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadhnr10_rgn_dataType_snr_gain_arr_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        hnr10_rgn_dataType::snr_gain_arr_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_hnr10_aec_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_hnr10_aec_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_hnr10_aec_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_hnr10_hdr_aec_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_hnr10_hdr_aec_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_hnr10_hdr_aec_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_hnr10_hdr_aec_dataType_hdr_aec_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_hnr10_hdr_aec_dataType_hdr_aec_dataStruct(
        ParameterFileSymbolTableEntry* entry,
        mod_hnr10_hdr_aec_dataType::hdr_aec_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_hnr10_drc_gain_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_hnr10_drc_gain_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_hnr10_drc_gain_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_hnr10_drc_gain_dataType_drc_gain_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_hnr10_drc_gain_dataType_drc_gain_dataStruct(
        ParameterFileSymbolTableEntry* entry,
        mod_hnr10_drc_gain_dataType::drc_gain_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_hnr10_total_scale_ratio_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_hnr10_total_scale_ratio_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_hnr10_total_scale_ratio_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_hnr10_total_scale_ratio_dataType_total_scale_ratio_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_hnr10_total_scale_ratio_dataType_total_scale_ratio_dataStruct(
        ParameterFileSymbolTableEntry* entry,
        mod_hnr10_total_scale_ratio_dataType::total_scale_ratio_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_hnr10_coreType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_hnr10_coreType(
        ParameterFileSymbolTableEntry* entry,
        chromatix_hnr10_coreType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_hnr10_reserveType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_hnr10_reserveType(
        ParameterFileSymbolTableEntry* entry,
        chromatix_hnr10_reserveType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_hnr10_reserveType_radial_anchor_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_hnr10_reserveType_radial_anchor_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_hnr10_reserveType::radial_anchor_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_hnr10Type
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_hnr10Type(
        ParameterFileSymbolTableEntry* entry,
        chromatix_hnr10Type* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load enable_sectionStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadenable_sectionStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_hnr10Type::enable_sectionStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load module_versionStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmodule_versionStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_hnr10Type::module_versionStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load control_variablesStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadcontrol_variablesStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_hnr10Type::control_variablesStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load control_methodStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadcontrol_methodStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_hnr10Type::control_methodStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load dynamic_enable_triggersStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loaddynamic_enable_triggersStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_hnr10Type::dynamic_enable_triggersStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load dynamic_enable_triggersStruct_hnr_nr_enableStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loaddynamic_enable_triggersStruct_hnr_nr_enableStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_hnr10Type::dynamic_enable_triggersStruct::hnr_nr_enableStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_hnr10_hdr_aec_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_hnr10_hdr_aec_dataType(
        mod_hnr10_hdr_aec_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_hnr10_hdr_aec_dataType_hdr_aec_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_hnr10_hdr_aec_dataType_hdr_aec_dataStruct(
        mod_hnr10_hdr_aec_dataType::hdr_aec_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_hnr10_drc_gain_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_hnr10_drc_gain_dataType(
        mod_hnr10_drc_gain_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_hnr10_drc_gain_dataType_drc_gain_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_hnr10_drc_gain_dataType_drc_gain_dataStruct(
        mod_hnr10_drc_gain_dataType::drc_gain_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_hnr10_total_scale_ratio_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_hnr10_total_scale_ratio_dataType(
        mod_hnr10_total_scale_ratio_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_hnr10_total_scale_ratio_dataType_total_scale_ratio_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_hnr10_total_scale_ratio_dataType_total_scale_ratio_dataStruct(
        mod_hnr10_total_scale_ratio_dataType::total_scale_ratio_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload chromatix_hnr10_coreType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadchromatix_hnr10_coreType(
        chromatix_hnr10_coreType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload chromatix_hnr10Type
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadchromatix_hnr10Type(
        chromatix_hnr10Type* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Parse symbol table entry, and return a new object
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ParameterModule* Parse(
        ParameterSetManager* manager,
        ParameterFileSymbolTableEntry* entry) const;

}; // End class chromatix_hnr10TypeClass

HNR_1_0_0_NAMESPACE_END
#endif // HNR_1_0_0_H

